home *** CD-ROM | disk | FTP | other *** search
/ Delphi Informant Complete 1995 - 2000 / Delphi Informant Complete 1995 to 2000.iso / Delphi Informant Magazine Complete Works SOURCE CODE 1998.rar / 1998 / Feb / di9802ts / Activscp.pas < prev    next >
Pascal/Delphi Source File  |  1997-07-23  |  7KB  |  166 lines

  1. unit Activscp;
  2.  
  3. interface
  4.  
  5. { Interface specification for ActiveX Scripting }
  6.  
  7. Uses Windows, comobj, activeX;
  8.  
  9. { IActiveScript.AddNamedItem input flags }
  10. const
  11.   SCRIPTITEM_ISVISIBLE          = $00000002;
  12.   SCRIPTITEM_ISSOURCE           = $00000004;
  13.   SCRIPTITEM_GLOBALMEMBERS      = $00000008;
  14.   SCRIPTITEM_ISPERSISTENT       = $00000040;
  15.   SCRIPTITEM_CODEONLY           = $00000200;
  16.   SCRIPTITEM_NOCODE             = $00000400;
  17.  
  18.   SCRIPTITEM_ALL_FLAGS  = ( SCRIPTITEM_ISSOURCE +
  19.                                   SCRIPTITEM_ISVISIBLE +
  20.                             SCRIPTITEM_ISPERSISTENT +
  21.                             SCRIPTITEM_GLOBALMEMBERS +
  22.                             SCRIPTITEM_NOCODE +
  23.                             SCRIPTITEM_CODEONLY );
  24.  
  25. { IActiveScript.AddTypeLib() input flags }
  26. const
  27.   SCRIPTTYPELIB_ISCONTROL      = $00000010;
  28.   SCRIPTTYPELIB_ISPERSISTENT   = $00000040;
  29.   SCRIPTTYPELIB_ALL_FLAGS      = (SCRIPTTYPELIB_ISCONTROL + SCRIPTTYPELIB_ISPERSISTENT);
  30.  
  31. { IActiveScriptParse.AddScriptlet() and
  32.   IActiveScriptParse.ParseScriptText() input flags }
  33. const
  34.   SCRIPTTEXT_NULL                     = $00000000;    { added for demo}
  35.   SCRIPTTEXT_ISVISIBLE                = $00000002;
  36.   SCRIPTTEXT_ISEXPRESSION             = $00000020;
  37.   SCRIPTTEXT_ISPERSISTENT             = $00000040;
  38.   SCRIPTTEXT_ALL_FLAGS  = (SCRIPTTEXT_ISVISIBLE
  39.                          + SCRIPTTEXT_ISEXPRESSION
  40.                          + SCRIPTTEXT_ISPERSISTENT);
  41.  
  42. { IActiveScriptSite.GetItemInfo() input flags }
  43. const
  44.   SCRIPTINFO_IUNKNOWN          = $00000001;
  45.   SCRIPTINFO_ITYPEINFO        = $00000002;
  46.   SCRIPTINFO_ALL_FLAGS        = (SCRIPTINFO_IUNKNOWN + SCRIPTINFO_ITYPEINFO);
  47.  
  48. { IActiveScript.Interrupt() Flags }
  49. const
  50.   SCRIPTINTERRUPT_DEBUG          = $00000001;
  51.   SCRIPTINTERRUPT_RAISEEXCEPTION = $00000002;
  52.   SCRIPTINTERRUPT_ALL_FLAGS         = (SCRIPTINTERRUPT_DEBUG
  53.                                   + SCRIPTINTERRUPT_RAISEEXCEPTION);
  54.  
  55. { script state enumerations}
  56. type
  57.   SCRIPTSTATE = LongInt; {(0..5);}
  58.  
  59.   const
  60.   SCRIPTSTATE_UNINITIALIZED  = SCRIPTSTATE(0);
  61.   SCRIPTSTATE_INITIALIZED    = SCRIPTSTATE(5);
  62.   SCRIPTSTATE_STARTED        = SCRIPTSTATE(1);
  63.   SCRIPTSTATE_CONNECTED      = SCRIPTSTATE(2);
  64.   SCRIPTSTATE_DISCONNECTED   = SCRIPTSTATE(3);
  65.   SCRIPTSTATE_CLOSED         = SCRIPTSTATE(4);
  66.  
  67. { script thread state values }
  68. type
  69.   SCRIPTTHREADSTATE = LongInt; {0..1}
  70. Const
  71.   SCRIPTTHREADSTATE_NOTINSCRIPT    = 0;
  72.   SCRIPTTHREADSTATE_RUNNING    = 1;
  73.  
  74. { thread IDs }
  75. type SCRIPTTHREADID = DWORD;
  76.  
  77. const
  78.   SCRIPTTHREADID_CURRENT = SCRIPTTHREADID(-1);
  79.   SCRIPTTHREADID_BASE    = SCRIPTTHREADID(-2);
  80.   SCRIPTTHREADID_ALL     = SCRIPTTHREADID(-3);
  81.  
  82. { GUID's }
  83. const
  84.  { Category ID's }
  85.  CATID_VBScript:              TGUID = '{B54F3741-5B07-11CF-A4B0-00AA004A55E8}';
  86.  CATID_JScript:               TGUID = '{F414C260-6AC0-11CF-B6D1-00AA00BBBB58}';
  87.  
  88.  { Class ID's }
  89.  IID_IActiveScriptParse:      TGUID = '{BB1A2AE2-A4F9-11CF-8F20-00805F2CD064}';
  90.  IID_IActiveScriptSite:       TGUID = '{DB01A1E3-A42B-11cf-8F20-00805F2CD064}';
  91.  IID_IActiveScriptSiteWindow: TGUID = '{D10F6761-83E9-11cF-8F20-00805F2CD064}';
  92.  
  93.  { String version of GUID's }
  94.  Class_IActiveScriptSite       = '{DB01A1E3-A42B-11cf-8F20-00805F2CD064}';
  95.  Class_IActiveScriptSiteWindow = '{D10F6761-83E9-11cF-8F20-00805F2CD064}';
  96.  
  97. type
  98.   POleVariant = ^OleVariant;
  99.   IActiveScript           = interface; { Forward declarations }
  100.   IActiveScriptParse      = interface;
  101.   IActiveScriptSite       = interface;
  102.   IActiveScriptSiteWindow = interface;
  103.  
  104.   { IActiveScript Interface - Methods in VTable order }
  105.   IActiveScript  = Interface(IUnknown)
  106.     Function SetScriptSite(ScriptSite: IActiveScriptSite):HResult; stdcall;
  107.     Function GetScriptSite(const iid: TIID; out vObj):HResult; stdcall;
  108.     Function SetScriptState(ScriptState: LongInt):HResult; stdcall;
  109.     Function GetScriptState(out ScriptState: LongInt): HResult; stdcall;
  110.     Function Close:HResult; stdcall;
  111.     Function AddNamedItem(ItemName: WideString; dwFlags: DWord): HResult; stdcall;
  112.     Function AddTypeLib(const GuidTypeLib: TGUID; wVerMajor, wVerMinor, wFlags: Word):HResult; stdcall;
  113.     Function GetScriptDispatch(StrItemName: Pointer; out ScriptDispatch: IDispatch):HResult; stdcall;
  114.     Function GetCurrentScriptThreadID(wScriptThreadID: Word):HResult; stdcall;
  115.     Function GetScriptThreadState(wScriptThreadID, wScriptState: Word):HResult; stdcall;
  116.     Function InterruptScriptThread(wScriptThreadID: Word; ExcepInfo: PExcepInfo; wFlags: Word ):HResult; stdcall;
  117.     Function Clone(Script: iActiveScript):HResult; stdcall;
  118.     Function GetScriptThreadID(wWin32Thread, wScriptThreadID: Word):HResult; stdcall;
  119.   end;
  120.  
  121.   { IActiveScriptParse Interface - Methods in VTable order }
  122.   IActiveScriptParse  = interface(IUnknown)
  123.     function InitNew: HResult; stdcall;
  124.     function AddScriptlet(DefaultName, ScriptCode, ItemName, SubItemName,
  125.       EventName, Delimiter: WideString; wSrcContextCookie: Word;
  126.       StartLine: Integer; wFlags: Word; StrName: WideString;
  127.       var ExcepInfo: TExcepInfo): Integer; stdcall;
  128.     function ParseScriptText(MainScript: WideString; ItemName: Pointer; UnkContext: IUnknown;
  129.       EndDelimiter: Pointer; dwSourceCookie: DWORD; StartLineNo: Integer;
  130.       dwFlags: DWord; var VarOut: OleVariant; var ExcepInfo: TExcepInfo): HResult; stdcall;
  131.    end;
  132.  
  133.    { IActiveScriptError Interface - Methods in VTable order }
  134.   IActiveScriptError  = interface(IUnknown)
  135.     Function GetExceptionInfo(var excepInfo: TExcepInfo):HResult; stdcall;
  136.     Function GetSourcePosition(out wContextCookie: Word; out lineNo: UINT;
  137.            out charPos: Integer):HResult; stdcall;
  138.     Function GetSourceLineText(wsSourceLine: WideString):HResult; stdcall;
  139.   end;
  140.  
  141.   { IActiveScriptSite Interface - We are responsible for implementing this... }
  142.   IActiveScriptSite = interface(IUnknown)
  143.     [Class_IActiveScriptSite]
  144.     function GetLCID(var wLCID: TLCID): HResult; stdcall;
  145.     function GetItemInfo(StrName: WideString; dwReturnMask: DWord;
  146.       out UnkItem: IUnknown; out TypeInfo: ITypeInfo): HResult; stdcall;
  147.     function GetDocVersionString(var VersionString: TBSTR): HResult; stdcall;
  148.     function OnScriptTerminate(var VarResult: OleVariant; var ExcepInfo: TExcepInfo): HResult; stdcall;
  149.     function OnStateChange(ScriptState: LongInt): HResult; stdcall;
  150.     function OnScriptError(pAse: IActiveScriptError): HResult; stdcall;
  151.     function OnEnterScript: HResult; stdcall;
  152.     function OnLeaveScript: HResult; stdcall;
  153.   end;
  154.  
  155.   { IActiveScriptSiteWindow is aggregated into IActiveScriptSite }
  156.   IActiveScriptSiteWindow = interface(IUnknown)
  157.     [Class_IActiveScriptSiteWindow]
  158.     function GetWindow(var Hwnd: THandle): HResult; stdcall;
  159.     function EnableModeless(FEnable: WordBool): HResult; stdcall;
  160.   end;
  161.  
  162.  
  163. implementation
  164.  
  165. end.
  166.